Skip to content

feat(frontend): upgrade Ant Design from v5 to v6#41636

Open
rusackas wants to merge 21 commits into
masterfrom
feat/antd6-upgrade
Open

feat(frontend): upgrade Ant Design from v5 to v6#41636
rusackas wants to merge 21 commits into
masterfrom
feat/antd6-upgrade

Conversation

@rusackas

@rusackas rusackas commented Jul 1, 2026

Copy link
Copy Markdown
Member

SUMMARY

Upgrades Ant Design from v5.26 to v6 (antd@6.5, @ant-design/icons@6) across the
Superset frontend. The upgrade is theme-safe: Superset's theme bridge
(getDesignTokenallowedAntdTokensConfigProvider + Emotion) works on v6
with no token loss — the only design-token drift is antd 6 recomputing box-shadow
values (cosmetic; dark-mode shadows are now correctly white-based).

Approach. A characterization test locks the full computed token set for light and
dark (Theme.test.tsx) so any token rename/removal fails loudly. React is already on
18 (v6's floor), and none of v6's removed legacy components were in use, so the code
surface was small and centralized in the @superset-ui/core/components wrappers.

Notable changes

  • Theme bridge: antd 6 dropped boolean from ThemeConfig['cssVar'] (now
    object-only); deserializeThemeConfig coerces true{}, false→omit.
  • Wrappers: Select (dropdownAlign removed, showSearch/tokenSeparators union
    handling), Tooltip/Popover/DropdownContainer styles.bodystyles.container.
  • App code: Steps.Stepitems, Popover/Tooltip visible/onVisibleChange
    open/onOpenChange, Dropdown overlaymenu, Pagination size="default"
    removed, dropdownAlign removed, .ant-tooltip-inner.ant-tooltip-container
    and .ant-select-selector.ant-select-content in styled CSS.
  • Genuine bug fix caught by tests: antd 6's Tag clones its icon prop and
    overwrites the icon's inline style, which silently stripped icon colors on
    Labels. Fixed by wrapping the icon in a span in Label/index.tsx so the wrapper
    (not the icon) is Tag's clone target.
  • Dependencies: removed the unused @rjsf/antd (the package pinning antd 5) and
    bumped @rjsf/core/utils/validator-ajv8 to v6 (theme-agnostic, React-only
    peers). @great-expectations/jsonforms-antd-renderers has no antd 6 release, so it
    is pinned to antd 6 via an overrides entry. Installs cleanly — no ERESOLVE, no
    legacy-peer-deps.
  • Test env: replaced the MessageChannel = undefined stub (an old rc-overflow
    workaround) with a lightweight polyfill — antd 6's scheduler requires the
    constructor.

BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF

UI is visually unchanged (parity upgrade). Manual dark/light + Storybook pass
recommended for reviewers; the Label icon-color fix restores v5 behavior.

TESTING INSTRUCTIONS

  • cd superset-frontend && npm ci && npm run type — 0 type errors.
  • npm run test — full Jest suite green (antd-6 test-DOM assertions updated).
  • New theme characterization tests: npx jest packages/superset-core/src/theme/Theme.test.tsx.
  • Manual: verify dashboards, Explore, SQL Lab, dark-mode toggle, dataset/published
    labels show colored icons, and Select/Tooltip/Popover render correctly.

ADDITIONAL INFORMATION

  • Has associated issue:
  • Required feature flags:
  • Changes UI
  • Includes DB Migration
  • Introduces new feature or API
  • Removes existing feature or API

@dosubot dosubot Bot added change:frontend Requires changing the frontend risk:breaking-change Issues or PRs that will introduce breaking changes labels Jul 1, 2026
@netlify

netlify Bot commented Jul 1, 2026

Copy link
Copy Markdown

Deploy Preview for superset-docs-preview ready!

Name Link
🔨 Latest commit cd88821
🔍 Latest deploy log https://app.netlify.com/projects/superset-docs-preview/deploys/6a4c9c5eb5bba50008ab353a
😎 Deploy Preview https://deploy-preview-41636--superset-docs-preview.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@codecov

codecov Bot commented Jul 1, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 78.12500% with 7 lines in your changes missing coverage. Please review.
✅ Project coverage is 64.69%. Comparing base (0efcd54) to head (5c967fd).
⚠️ Report is 7 commits behind head on master.

Files with missing lines Patch % Lines
...tiveFilters/FiltersConfigModal/NewItemDropdown.tsx 50.00% 4 Missing ⚠️
...rset-ui-core/src/components/Select/AsyncSelect.tsx 85.71% 1 Missing ⚠️
.../superset-ui-core/src/components/Select/Select.tsx 83.33% 1 Missing ⚠️
...components/DashboardBuilder/DashboardContainer.tsx 0.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master   #41636      +/-   ##
==========================================
+ Coverage   64.66%   64.69%   +0.02%     
==========================================
  Files        2702     2702              
  Lines      150142   150155      +13     
  Branches    34564    34572       +8     
==========================================
+ Hits        97083    97136      +53     
+ Misses      51277    51237      -40     
  Partials     1782     1782              
Flag Coverage Δ
javascript 69.81% <78.12%> (+0.05%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@bito-code-review bito-code-review Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review Agent Run #8eacea

Actionable Suggestions - 1
  • superset-frontend/packages/superset-ui-core/src/components/Tabs/Tabs.test.tsx - 1
    • Incomplete refactoring - test/component mismatch · Line 51-51
Additional Suggestions - 7
  • superset-frontend/src/explore/components/controls/DateFilterControl/tests/CustomFrame.test.tsx - 1
    • Query method change - needs runtime verification · Line 64-64
      Changed query from `getByRole('img', { name: 'calendar' })` to `getByLabelText('calendar')`. Verify the DatePicker icon renders with aria-label="calendar" - otherwise tests will fail at runtime when no element matches.
  • superset-frontend/src/features/semanticLayers/SemanticLayerModal.tsx - 1
    • Dropdown alignment removed · Line 409-409
      Removing `dropdownAlign` from the `Select` component may cause a regression in dropdown menu positioning. The deleted configuration controlled alignment (`points: ['tl', 'bl']`), vertical offset (`[0, 4]`), and overflow adjustment (`adjustX: 0, adjustY: 1`). If this change was intentional, verify the default behavior meets UX requirements; otherwise restore the prop to avoid positioning issues in the semantic layer type selector.
  • superset-frontend/packages/superset-ui-core/src/components/CronPicker/index.tsx - 1
    • Incomplete v6 CSS migration · Line 178-178
      This selector change from `.ant-select-selector` to `.ant-select-content` appears correct for antd v6 migration, but the same file contains two other ant-select CSS selectors (`.ant-select-selection-placeholder` at line 191 and `.ant-select-selection-overflow-item` at line 196) that still use v5 class names. For consistency and maintainability, verify these other selectors are still valid in v6 or update them as part of the same migration effort.
  • superset-frontend/src/components/TableSelector/TableSelector.test.tsx - 1
    • Inconsistent CSS selector pattern · Line 63-63
      Update `getSelectItemContainer` to handle both antd v5 and v4 class names by first querying for `ant-select-content-has-value` and falling back to `ant-select-selection-item` for broader compatibility.
  • superset-frontend/packages/superset-core/src/theme/Theme.test.tsx - 1
    • Semantic duplication in test setup patterns · Line 952-965
      The light and dark mode token-completeness tests (lines 952-965 and 967-979) share nearly identical setup code. While functionally correct, this duplication creates maintenance risk if the base theme or algorithm selection logic changes.
  • superset-frontend/packages/superset-ui-core/src/components/TableCollection/TableCollection.test.tsx - 1
    • Unnecessary optional chaining on parentNode · Line 107-107
      The optional chaining `?.` on `container?.parentNode` may mask test failures. Since `container` comes from `screen.getByTestId('listview-table').parentNode` and should always exist in the rendered loading state, using `container.parentNode` would align with other assertions (line 106) and better catch regressions if the DOM structure changes.
  • superset-frontend/jest.config.js - 1
    • Unreachable pattern dead code · Line 75-75
      The added `|@x0k/.*|` pattern segment references packages that do not exist in package.json dependencies. This is unreachable dead code within the diff — while it won't cause a compilation or runtime failure, it increases regex complexity without serving any purpose and may confuse future maintainers.
Filtered by Review Rules

Bito filtered these suggestions based on rules created automatically for your feedback. Manage rules.

  • superset-frontend/src/dashboard/components/CustomizationsBadge/index.tsx - 1
  • superset-frontend/packages/superset-ui-core/src/components/Select/constants.ts - 1
Review Details
  • Files reviewed - 54 · Commit Range: e35c7ae..e35c7ae
    • superset-frontend/jest.config.js
    • superset-frontend/packages/superset-core/src/theme/Theme.test.tsx
    • superset-frontend/packages/superset-core/src/theme/__snapshots__/Theme.test.tsx.snap
    • superset-frontend/packages/superset-core/src/theme/utils/index.ts
    • superset-frontend/packages/superset-ui-core/src/components/Collapse/Collapse.test.tsx
    • superset-frontend/packages/superset-ui-core/src/components/CronPicker/index.tsx
    • superset-frontend/packages/superset-ui-core/src/components/DropdownContainer/DropdownContainer.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Label/index.tsx
    • superset-frontend/packages/superset-ui-core/src/components/PageHeaderWithActions/PageHeaderWithActions.test.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Select/AsyncSelect.test.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Select/AsyncSelect.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Select/Select.test.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Select/Select.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Select/constants.ts
    • superset-frontend/packages/superset-ui-core/src/components/Select/types.ts
    • superset-frontend/packages/superset-ui-core/src/components/TableCollection/TableCollection.test.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Tabs/Tabs.test.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Tooltip/index.tsx
    • superset-frontend/packages/superset-ui-core/src/components/TooltipParagraph/TooltipParagraph.test.tsx
    • superset-frontend/plugins/plugin-chart-table/src/Styles.tsx
    • superset-frontend/plugins/plugin-chart-table/test/TableChart.test.tsx
    • superset-frontend/spec/helpers/jsDomWithFetchAPI.ts
    • superset-frontend/src/SqlLab/components/ColumnElement/index.tsx
    • superset-frontend/src/SqlLab/components/TabbedSqlEditors/TabbedSqlEditors.test.tsx
    • superset-frontend/src/components/Chart/DrillBy/DrillBySubmenu.tsx
    • superset-frontend/src/components/Chart/DrillDetail/DrillDetailPane.test.tsx
    • superset-frontend/src/components/Datasource/components/DatasourceEditor/components/DatasetUsageTab/index.tsx
    • superset-frontend/src/components/Datasource/components/DatasourceEditor/tests/DatasourceEditor.test.tsx
    • superset-frontend/src/components/ListView/ListView.tsx
    • superset-frontend/src/components/TableSelector/TableSelector.test.tsx
    • superset-frontend/src/dashboard/components/AddSliceCard/AddSliceCard.test.tsx
    • superset-frontend/src/dashboard/components/CustomizationsBadge/index.tsx
    • superset-frontend/src/dashboard/components/gridComponents/Tabs/Tabs.test.tsx
    • superset-frontend/src/dashboard/components/nativeFilters/FilterBar/CrossFilters/CrossFilter.test.tsx
    • superset-frontend/src/dashboard/components/nativeFilters/FilterBar/UrlFilters/Vertical.test.tsx
    • superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/DatasetSelect.test.tsx
    • superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigModal.test.tsx
    • superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/NewItemDropdown.tsx
    • superset-frontend/src/explore/components/controls/ConditionalFormattingControl/FormattingPopoverContent.test.tsx
    • superset-frontend/src/explore/components/controls/DateFilterControl/components/DateFunctionTooltip.tsx
    • superset-frontend/src/explore/components/controls/DateFilterControl/tests/CustomFrame.test.tsx
    • superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopover/AdhocFilterEditPopover.test.tsx
    • superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopoverSimpleTabContent/AdhocFilterEditPopoverSimpleTabContent.test.tsx
    • superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopoverSimpleTabContent/index.tsx
    • superset-frontend/src/explore/components/controls/NumberControl/NumberControl.test.tsx
    • superset-frontend/src/explore/components/controls/SelectControl.test.tsx
    • superset-frontend/src/features/alerts/AlertReportModal.test.tsx
    • superset-frontend/src/features/semanticLayers/MultiEnumControl.test.tsx
    • superset-frontend/src/features/semanticLayers/SemanticLayerModal.tsx
    • superset-frontend/src/features/tasks/TaskPayloadPopover.tsx
    • superset-frontend/src/features/tasks/TaskStackTracePopover.tsx
    • superset-frontend/src/pages/ChartCreation/index.tsx
    • superset-frontend/src/pages/ChartList/ChartList.listview.test.tsx
    • superset-frontend/src/visualizations/TimeTable/TimeTable.test.tsx
  • Files skipped - 5
    • superset-frontend/package-lock.json - Reason: Filter setting
    • superset-frontend/package.json - Reason: Filter setting
    • superset-frontend/packages/superset-core/package.json - Reason: Filter setting
    • superset-frontend/packages/superset-ui-chart-controls/package.json - Reason: Filter setting
    • superset-frontend/packages/superset-ui-core/package.json - Reason: Filter setting
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful
    • Eslint (Linter) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

Comment thread superset-frontend/cypress-base/cypress/e2e/dashboard/utils.ts
Comment thread superset-frontend/cypress-base/cypress/e2e/dashboard/utils.ts
Comment thread superset-frontend/cypress-base/cypress/e2e/dashboard/utils.ts
Comment thread superset-frontend/cypress-base/cypress/e2e/explore/utils.ts
Comment thread superset-frontend/cypress-base/cypress/support/directories.ts
Comment thread superset-frontend/packages/superset-core/src/theme/utils/index.ts
@bito-code-review

bito-code-review Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Code Review Agent Run #7c4d77

Actionable Suggestions - 0
Review Details
  • Files reviewed - 7 · Commit Range: e35c7ae..f3c8482
    • superset-frontend/cypress-base/cypress/e2e/dashboard/utils.ts
    • superset-frontend/cypress-base/cypress/e2e/explore/utils.ts
    • superset-frontend/cypress-base/cypress/support/directories.ts
    • superset-frontend/playwright/components/core/Select.ts
    • superset-frontend/packages/superset-ui-core/src/components/Label/Label.test.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Tooltip/Tooltip.stories.tsx
    • superset-frontend/playwright/pages/ChartCreationPage.ts
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful
    • Eslint (Linter) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

Comment thread superset-frontend/cypress-base/cypress/support/directories.ts
Comment thread superset-frontend/cypress-base/cypress/support/directories.ts
Comment thread superset-frontend/cypress-base/cypress/support/directories.ts
Comment thread superset-frontend/cypress-base/cypress/support/directories.ts
Comment thread superset-frontend/packages/superset-ui-core/src/components/Select/styles.tsx Outdated
@bito-code-review

bito-code-review Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Code Review Agent Run #a43638

Actionable Suggestions - 0
Filtered by Review Rules

Bito filtered these suggestions based on rules created automatically for your feedback. Manage rules.

  • superset-frontend/src/dashboard/components/BuilderComponentPane/index.tsx - 2
    • Wrong antd CSS class names · Line 70-73
    • Inconsistent CSS class names across codebase · Line 70-73
Review Details
  • Files reviewed - 21 · Commit Range: f3c8482..087ab15
    • superset-frontend/playwright/tests/home/welcome.spec.ts
    • superset-frontend/packages/superset-core/src/theme/GlobalStyles.tsx
    • superset-frontend/packages/superset-ui-core/src/components/CronPicker/index.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Select/styles.tsx
    • superset-frontend/packages/superset-ui-core/src/components/antdDomContract.test.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Tabs/Tabs.tsx
    • superset-frontend/src/SqlLab/components/App/index.tsx
    • superset-frontend/src/SqlLab/components/SouthPane/index.tsx
    • superset-frontend/src/SqlLab/components/SqlEditor/index.tsx
    • superset-frontend/src/components/Datasource/components/DatasourceEditor/DatasourceEditor.tsx
    • superset-frontend/src/dashboard/components/BuilderComponentPane/index.tsx
    • superset-frontend/src/dashboard/components/DashboardBuilder/DashboardContainer.tsx
    • superset-frontend/src/dashboard/styles.ts
    • superset-frontend/src/explore/components/ControlPanelsContainer.tsx
    • superset-frontend/src/explore/components/DataTablesPane/DataTablesPane.tsx
    • superset-frontend/src/explore/components/DataTablesPane/components/ResultsPaneOnDashboard.tsx
    • superset-frontend/src/features/databases/DatabaseModal/index.tsx
    • superset-frontend/src/features/databases/DatabaseModal/styles.ts
    • superset-frontend/packages/superset-ui-core/src/components/DropdownContainer/DropdownContainer.tsx
    • superset-frontend/plugins/plugin-chart-ag-grid-table/src/styles/index.tsx
    • superset-frontend/src/pages/ChartCreation/index.tsx
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful
    • Eslint (Linter) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@bito-code-review

bito-code-review Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Code Review Agent Run #43c082

Actionable Suggestions - 0
Review Details
  • Files reviewed - 16 · Commit Range: 087ab15..aaf62f8
    • superset-frontend/cypress-base/cypress/e2e/dashboard/utils.ts
    • superset-frontend/cypress-base/cypress/support/directories.ts
    • superset-frontend/packages/superset-ui-core/src/components/Collapse/Collapse.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Select/AsyncSelect.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Select/Select.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Select/constants.ts
    • superset-frontend/packages/superset-ui-core/src/components/Select/types.ts
    • superset-frontend/packages/superset-ui-core/src/components/antdDomContract.test.tsx
    • superset-frontend/src/SqlLab/components/ScheduleQueryButton/ScheduleQueryButton.test.tsx
    • superset-frontend/src/components/Modal/StandardModal.tsx
    • superset-frontend/src/dashboard/components/nativeFilters/ConfigModal/SharedStyles.tsx
    • superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/ConfigModalSidebar/ConfigModalSidebar.tsx
    • superset-frontend/src/explore/components/ControlPanelsContainer.tsx
    • superset-frontend/src/explore/components/controls/DateFilterControl/components/DateFunctionTooltip.tsx
    • superset-frontend/src/explore/components/controls/VizTypeControl/VizTypeGallery.tsx
    • superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigModal.test.tsx
  • Files skipped - 3
    • UPDATING.md - Reason: Filter setting
    • superset-frontend/package-lock.json - Reason: Filter setting
    • superset-frontend/packages/superset-ui-core/package.json - Reason: Filter setting
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful
    • Eslint (Linter) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@rusackas rusackas added the 🎪 ⚡ showtime-trigger-start Create new ephemeral environment for this PR label Jul 4, 2026
@github-actions github-actions Bot added 🎪 aaf62f8 🚦 building 🎪 ⌛ 48h Environment expires after 48 hours (default) and removed 🎪 ⚡ showtime-trigger-start Create new ephemeral environment for this PR labels Jul 4, 2026
@github-actions

github-actions Bot commented Jul 4, 2026

Copy link
Copy Markdown
Contributor

🎪 Showtime is building environment on GHA for aaf62f8

rusackas and others added 20 commits July 7, 2026 18:53
Upgrades antd 5.26 -> 6.5 (and @ant-design/icons -> 6) across the frontend.

Theme-safe: the getDesignToken -> allowedAntdTokens -> ConfigProvider/Emotion
bridge works on v6 with no token loss (only cosmetic box-shadow recomputation).
Adds theme characterization tests that lock the full computed token set for
light and dark so any future token rename/removal fails loudly.

Key changes:
- Theme bridge: coerce boolean `cssVar` (removed from v6 ThemeConfig) to the
  object form.
- Wrappers/app: Select (dropdownAlign removed; showSearch/tokenSeparators union
  handling), Tooltip/Popover/DropdownContainer styles.body -> styles.container,
  Steps.Step -> items, Popover/Tooltip/Dropdown visible/onVisibleChange ->
  open/onOpenChange, Dropdown overlay -> menu, Pagination size="default"
  removed, .ant-tooltip-inner -> .ant-tooltip-container and
  .ant-select-selector -> .ant-select-content in styled CSS.
- Fixes a real regression the tests caught: antd v6 Tag overwrites its `icon`
  prop's inline style, dropping Label icon colors; fixed by wrapping the icon.
- Deps: remove unused @rjsf/antd (pinned antd 5); bump @rjsf/core/utils/
  validator-ajv8 to v6; pin jsonforms-antd-renderers to antd 6 via overrides.
- Test env: replace the `MessageChannel = undefined` stub with a polyfill
  (antd v6's scheduler needs the constructor).
- Update test-DOM assertions across suites for v6 class/structure renames.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
E2E specs query antd's internal Select DOM, which v6 renamed. Fixes the
Cypress + Playwright failures on the antd6 upgrade:
- .ant-select-selection-search-input -> .ant-select-input (central Playwright
  Select helper + Cypress directories/utils; drives create-dataset, dataset-list
  modals, sqllab DB selection, and the "Select a dashboard" chart flow)
- .ant-select-selector -> .ant-select-content
- .ant-select-selection-placeholder -> .ant-select-placeholder
- .ant-select-selection-item -> combined .ant-select-content-has-value,
  .ant-select-selection-item (single + multiple modes)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…tory

- Add a direct regression test in Label.test.tsx asserting a Label with a
  colored icon keeps its color (guards the shared Label/index.tsx fix for antd
  v6's Tag overwriting the icon's inline style).
- Update the Tooltip story argType onVisibleChange -> onOpenChange so the
  generated docs show the current antd v6 prop.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
antd v6 moved the Select `aria-label` onto the combobox <input>, so
getByLabel('Dataset') resolved to the empty input (no text content) instead of
the value container. Scope getDatasetSelectContainer to
`.ant-select-content-has-value` (which wraps the input and holds the selected
value text), fixing the create-dataset wizard assertion.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The auth suite only waits for the welcome URL + session cookie, so a
welcome page that routes correctly but renders a blank shell (only the
top nav) would still pass CI. Assert a Home content section ('Recents',
a Collapse panel absent from the nav) is visible, so a blank landing
page fails loudly.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…or v6

antd 6 renamed several internal DOM classes; these styled-component and
GlobalStyles overrides silently stopped matching (broken visual overrides
no test catches). Verified each replacement against real antd 6 rendered DOM:

- Popover: .ant-popover-inner -> .ant-popover-container (explore-popover padding)
- Select value container: .ant-select-selector/.ant-select-selection-overflow
  -> .ant-select-content; overflow items .ant-select-selection-overflow-item[-rest|-suffix]
  -> .ant-select-content-item[-rest|-suffix]; placeholder
  .ant-select-selection-placeholder -> .ant-select-placeholder; search wrapper
  .ant-select-selection-search -> .ant-select-input. Multiple-mode tag
  .ant-select-selection-item is unchanged in v6 and kept as-is.

The ColorPicker alpha overrides (#34721) are intentionally left untouched: the
geostyler CSS they counteracted no longer hides those controls, and antd 6
removed the alpha-specific slider class — re-pointing them would wrongly restyle
sliders. Flagged for visual QA instead.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The antd 5->6 DOM class renames broke several CSS overrides silently — no
test failed when a selector stopped matching. Add a contract test asserting
the antd6 classes our overrides depend on still exist (select value/overflow/
placeholder containers, popover-container, tooltip-container, modal-body), so a
future antd bump that renames one fails loudly here instead of shipping a
visual regression.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…QL Lab editor)

antd 6 restructured the Tabs content DOM, breaking the fullHeight height
chain that SQL Lab, Explore, and several modals rely on. The Ace editor
rendered into a 0-height container and never became visible — every
chromium-sqllab Playwright test timed out at 60s (vs ~8s on master), and
the editor was effectively unusable.

antd 5 -> 6 positional rename (verified against real v6 rendered DOM):
  .ant-tabs-content-holder      -> .ant-tabs-body-holder
  .ant-tabs-content (wrapper)   -> .ant-tabs-body   (new intermediate level)
  .ant-tabs-tabpane   (panel)   -> .ant-tabs-content (now the [role=tabpanel])

The new .ant-tabs-body level had no height rule, collapsing the chain.
Applied the rename across the core Tabs wrapper and all app overrides that
walk this DOM (SQL Lab App/SouthPane/SqlEditor, Explore ControlPanels/
DataTablesPane, DatabaseModal, DatasourceEditor, dashboard). Extended the
antd DOM contract test to pin the body-holder -> body -> content chain so a
future antd bump fails loudly instead of silently collapsing it.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…act test

Test-driven audit (rendering each antd6 component and dumping its real
classes) surfaced more silently-broken overrides the earlier passes missed:

- ChartCreation: `.ant-steps-item-tail` -> `.ant-steps-item-rail` (antd6 renamed
  the Steps connector line; the 'hide connector' rule had stopped matching).
- DropdownContainer + plugin-chart-ag-grid-table: `.ant-popover-inner` ->
  `.ant-popover-container` (two sites missed when GlobalStyles was fixed).

Verified via real v6 DOM that `.ant-modal-close-x`, `.ant-steps`/`-item-icon`/
`-item-title`/`-item-content` are NOT renamed and were correctly left alone.

Extended antdDomContract.test.tsx with Steps (incl. the tail->rail rename that
SQL Lab loading detection also depends on via `.ant-steps`) and the Select
suffix/arrow class, so this whole class of silent breakage is guarded.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
An antd major bump is breaking for downstream plugin/extension authors:
renamed .ant-* internal DOM classes (custom CSS silently stops matching),
changed/removed component props, and CSS variables on by default. Log the
notable renames and point at the upstream migration guide.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Deep review of the branch surfaced ten verified defects; fixes:

- Restore the #36963 dropdown-positioning fix: antd 6 removed Select's
  `dropdownAlign`, and the migration deleted DROPDOWN_ALIGN_BOTTOM without
  a replacement. Re-expressed via the supported `builtinPlacements` prop
  (antd 6's own defaults with adjustX disabled).
- Bump react-js-cron 5.2 -> 6.0.2 (antd >=6 peer): its vendor stylesheet
  was written against antd 5 Select classes, silently killing the cron
  error styling and layout. v6 ships antd6-native selectors.
- Migrate the Collapse content family (.ant-collapse-content -> -panel,
  .ant-collapse-content-box -> -body) across Collapse.tsx, VizTypeGallery,
  ControlPanelsContainer, StandardModal, config-modal styles, and the
  Cypress selectors — same silent-override breakage as the Tabs chain.
- DateFunctionTooltip: rules were nested inside a stale .ant-tooltip-content
  ancestor antd 6 never renders; apply them to .ant-tooltip-container.
- Cypress advanced-time-range helper: .ant-popover-inner-content ->
  .ant-popover-content (v6 body element).
- Narrow the Select wrapper's `showSearch` to boolean and
  `tokenSeparators` to string[]: antd 6 widened both (SearchConfig object,
  function form) but the wrapper silently discards those forms — make the
  unsupported forms a compile error instead.
- AsyncSelect: suffix icon now reflects the effective searchability
  (allowNewOptions || showSearch), matching Select and the actual antd prop.
- Add an rjsf v6 smoke test for ScheduleQueryButton (sole @rjsf consumer;
  form is config-driven so a breaking rjsf change is invisible to tsc).
- Expand the antd DOM contract test: select input/suffix-item, tabs
  content-active, popover container>title+content structure, and the
  Collapse panel/body family.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… name)

- Format ScheduleQueryButton.test.tsx (long import line).
- FiltersConfigModal restore/undo tests (new on master, first exercised
  against antd6 by the merge): query the filter delete button by its
  intended accessible name. @ant-design/icons 6 fixes label precedence —
  the developer-provided aria-label ('Remove filter') now correctly wins
  over the icon-name default ('delete') that the icons 5 render exposed
  and the tests had matched.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
antd 6 removed the Tag's default margin-inline-end: 8px in favor of
parents spacing tags via flex/Space gaps. App layouts predate that and
rely on the v5 default — most visibly the dashboard header, where the
Published tag sat flush against the metadata bar. Restore the margin in
GlobalStyles (to be removed once Tag-adjacent layouts declare their own
gaps) and pin it with a computed-style regression test that exercises
the provider -> GlobalStyles -> Tag chain.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… rjsf6 array-button classes

Convert the remaining high-risk manual-QA watch items into tests, and fix
one more real bug the hardening surfaced:

- ScheduleQueryButton (fix): rjsf 6 renamed the array-item button classes
  (array-item-* -> rjsf-array-item-*), so StyledJsonSchema's up/down/remove
  glyphs targeted dead classes and the buttons rendered completely empty
  (their glyphicon <i> is hidden by design). Update the selectors and pin
  the v6 class names with a test that adds array items and asserts all
  three buttons render.
- jsonforms-antd-renderers (new real-render smoke test): the package has no
  antd 6 release and is forced onto antd 6 via overrides; the modal tests
  mock <JsonForms /> away. Render the real renderers exactly as
  SemanticLayerModal does (same renderers/cells/uischema) and exercise
  string/enum/boolean/number controls plus typing and dropdown selection.
- CronPicker (new error-state test): the invalid-cron error styling was
  silently dead pre-react-js-cron-6; pin that an invalid value fires
  onError and applies the vendor's error class.
- DROPDOWN_BUILTIN_PLACEMENTS (new characterization test): pin the #36963
  contract — all four antd placements present with antd's points/offsets
  and horizontal viewport adjustment disabled.

geostyler remains manual-QA only: it depends on OpenLayers + monaco, which
are not meaningfully renderable in jsdom.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…object

The Explore Results-grid page object arrived from master using
.ant-tabs-tabpane-active; antd 6 renders the active panel as
.ant-tabs-content-active, so the locator would never match and any spec
using getResultsGrid() would time out.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…stion)

The move-button assertions ran outside the waitFor guarding the remove
buttons; same render pass so unlikely to flake, but consistent retry
wrapping removes the risk entirely.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Replace the `any` in the theme algorithm map with antd's `MappingAlgorithm`
type, and apply `&&` specificity boosting to all three selectors in the
Select max-height rule instead of just the first (bito suggestions).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Three test files still referenced antd5-era class names that were
missed when the rest of the antd6 upgrade swept through: the
paste-trim Select/AsyncSelect tests used
`.ant-select-selection-search-input` (now `.ant-select-input`),
TimeTable.test.tsx had one occurrence of `.ant-table-measure-cell-content`
left over from `.ant-table-measure-row`, and TableSelector.test.tsx's
`getSelectItemContainer` only matched single-select's
`.ant-select-content-has-value` and missed multi-select's
`.ant-select-selection-item`.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Mirrors the static Select wrapper so AsyncSelect dropdowns keep the
#36963 fix (disabled horizontal viewport adjustment) after the antd v6
upgrade, instead of falling back to antd's default placements.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@rusackas

rusackas commented Jul 8, 2026

Copy link
Copy Markdown
Member Author

@EnxDev the two selectors you flagged (Select.test.tsx:395, AsyncSelect.test.tsx:415) already use .ant-select-input, not the stale .ant-select-selection-search-input, at current HEAD, so those should already be green. Also just rebased onto master to clear the merge conflict.

@github-actions

github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

🎪 Showtime is building environment on GHA for e70b39d

@github-actions

github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

🎪 Showtime deployed environment on GHA for e70b39d

Environment: http://18.237.2.163:8080 (admin/admin)
Lifetime: 48h auto-cleanup
Updates: New commits create fresh environments automatically

@bito-code-review bito-code-review Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review Agent Run #483299

Actionable Suggestions - 1
  • superset-frontend/playwright/pages/ChartCreationPage.ts - 1
Additional Suggestions - 7
  • superset-frontend/plugins/plugin-chart-table/src/Styles.tsx - 1
    • Verify antd 6 DOM class · Line 102-102
      The CSS selector targets `.ant-select-suffix` for the page size dropdown arrow (line 102). The `antdDomContract.test.tsx` file documents that antd 6 renamed internal DOM classes (e.g., `.ant-select-selection-item` → `.ant-select-content`). However, tech_verifier found no official documentation confirming `.ant-select-arrow` → `.ant-select-suffix` is a documented rename. The test at `TableChart.test.tsx:1976-1980` validates this selector has `z-index: 11`, but ensure runtime DOM inspection confirms `.ant-select-suffix` is the correct class for the arrow icon in the actual rendered component, not a sibling element.
  • superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/DatasetSelect.test.tsx - 1
    • Unverifiable behavior claim · Line 183-185
      The comment states antd v6 no longer includes the internal `key` field, but official antd v6 documentation still lists `LabeledValue` (which includes `key`) as a valid type for the onChange value parameter. tech_verifier could not confirm this specific behavior change. Please verify this change by running the test or adding an integration test that confirms antd v6 actually omits `key`. If verification fails, the test should retain the original assertion.
  • superset-frontend/packages/superset-ui-core/src/components/Select/AsyncSelect.test.tsx - 1
    • Inconsistent return type handling · Line 130-137
      The `findAllSelectValues` function in `AsyncSelect.test.tsx` returns `NodeListOf` directly, while the equivalent function in `Select.test.tsx` wraps it in an array `[...]` before returning. This inconsistency could cause behavioral differences when tests iterate over results or pass them to assertions that expect arrays. For consistency across the test suite, apply the same array-wrapping pattern.
  • superset-frontend/src/explore/components/DataTablesPane/DataTablesPane.tsx - 1
    • Fragile internal CSS selectors · Line 68-68
      The change from `.ant-tabs-content-holder` to `.ant-tabs-body-holder` aligns with antd v6 DOM restructuring, and this selector is used consistently across 14+ files in the codebase. However, hardcoded internal class names are fragile — consider using antd's `classNames`/`styles` props for stability.
  • superset-frontend/packages/superset-ui-core/src/components/CronPicker/CronPicker.test.tsx - 1
    • Flaky test without waitFor · Line 57-60
      The DOM assertion for `.react-js-cron-error` is outside `waitFor`, creating a race condition. If `onError` fires before the class is applied to the DOM, the test will fail intermittently. Consistency with the `onError` check (line 52) requires the same async pattern.
  • superset-frontend/packages/superset-ui-core/src/components/Select/constants.test.ts - 1
    • Incomplete overflow property coverage · Line 63-95
      Add an assertion for `placement.overflow.shiftY` in the `forEach` loop so the test verifies all overflow properties (`adjustX`, `adjustY`, and `shiftY`).
  • superset-frontend/packages/superset-ui-core/src/components/Label/index.tsx - 1
    • Semantic dead code in ternary · Line 96-97
      The `else ( icon )` branch is semantically dead code. When the ternary's condition is false, `icon` is already falsy (undefined/null/false), so `icon` in the else branch is always `undefined`. Both branches produce identical output, but the else branch adds unnecessary conditional logic and cognitive load.
Filtered by Review Rules

Bito filtered these suggestions based on rules created automatically for your feedback. Manage rules.

  • superset-frontend/src/explore/components/ControlPanelsContainer.tsx - 1
  • superset-frontend/src/SqlLab/components/TabbedSqlEditors/TabbedSqlEditors.test.tsx - 1
  • superset-frontend/src/components/Datasource/components/DatasourceEditor/DatasourceEditor.tsx - 1
  • superset-frontend/src/dashboard/components/BuilderComponentPane/index.tsx - 1
    • Incomplete Ant Design v6 migration · Line 70-73
  • superset-frontend/src/explore/components/DataTablesPane/components/ResultsPaneOnDashboard.tsx - 1
    • Missing ant-tabs-body-holder selector · Line 31-41
Review Details
  • Files reviewed - 90 · Commit Range: 8e3eac8..e70b39d
    • superset-frontend/cypress-base/cypress/e2e/dashboard/utils.ts
    • superset-frontend/cypress-base/cypress/e2e/explore/utils.ts
    • superset-frontend/cypress-base/cypress/support/directories.ts
    • superset-frontend/jest.config.js
    • superset-frontend/packages/superset-core/src/theme/GlobalStyles.tsx
    • superset-frontend/packages/superset-core/src/theme/Theme.test.tsx
    • superset-frontend/packages/superset-core/src/theme/__snapshots__/Theme.test.tsx.snap
    • superset-frontend/packages/superset-core/src/theme/utils/index.ts
    • superset-frontend/packages/superset-ui-core/src/components/Collapse/Collapse.test.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Collapse/Collapse.tsx
    • superset-frontend/packages/superset-ui-core/src/components/CronPicker/CronPicker.test.tsx
    • superset-frontend/packages/superset-ui-core/src/components/CronPicker/index.tsx
    • superset-frontend/packages/superset-ui-core/src/components/DropdownContainer/DropdownContainer.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Label/Label.test.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Label/index.tsx
    • superset-frontend/packages/superset-ui-core/src/components/PageHeaderWithActions/PageHeaderWithActions.test.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Select/AsyncSelect.test.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Select/AsyncSelect.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Select/Select.test.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Select/Select.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Select/constants.test.ts
    • superset-frontend/packages/superset-ui-core/src/components/Select/constants.ts
    • superset-frontend/packages/superset-ui-core/src/components/Select/styles.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Select/types.ts
    • superset-frontend/packages/superset-ui-core/src/components/TableCollection/TableCollection.test.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Tabs/Tabs.test.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Tabs/Tabs.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Tooltip/Tooltip.stories.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Tooltip/index.tsx
    • superset-frontend/packages/superset-ui-core/src/components/TooltipParagraph/TooltipParagraph.test.tsx
    • superset-frontend/packages/superset-ui-core/src/components/antdDomContract.test.tsx
    • superset-frontend/playwright/components/core/Select.ts
    • superset-frontend/playwright/pages/ChartCreationPage.ts
    • superset-frontend/playwright/pages/ExplorePage.ts
    • superset-frontend/playwright/tests/home/welcome.spec.ts
    • superset-frontend/plugins/plugin-chart-ag-grid-table/src/styles/index.tsx
    • superset-frontend/plugins/plugin-chart-table/src/Styles.tsx
    • superset-frontend/plugins/plugin-chart-table/test/TableChart.test.tsx
    • superset-frontend/spec/helpers/jsDomWithFetchAPI.ts
    • superset-frontend/src/SqlLab/components/App/index.tsx
    • superset-frontend/src/SqlLab/components/ColumnElement/index.tsx
    • superset-frontend/src/SqlLab/components/ScheduleQueryButton/ScheduleQueryButton.test.tsx
    • superset-frontend/src/SqlLab/components/ScheduleQueryButton/index.tsx
    • superset-frontend/src/SqlLab/components/SouthPane/index.tsx
    • superset-frontend/src/SqlLab/components/SqlEditor/index.tsx
    • superset-frontend/src/SqlLab/components/TabbedSqlEditors/TabbedSqlEditors.test.tsx
    • superset-frontend/src/components/Chart/DrillBy/DrillBySubmenu.tsx
    • superset-frontend/src/components/Chart/DrillDetail/DrillDetailPane.test.tsx
    • superset-frontend/src/components/Datasource/components/DatasourceEditor/DatasourceEditor.tsx
    • superset-frontend/src/components/Datasource/components/DatasourceEditor/components/DatasetUsageTab/index.tsx
    • superset-frontend/src/components/Datasource/components/DatasourceEditor/tests/DatasourceEditor.test.tsx
    • superset-frontend/src/components/ListView/ListView.tsx
    • superset-frontend/src/components/Modal/StandardModal.tsx
    • superset-frontend/src/components/TableSelector/TableSelector.test.tsx
    • superset-frontend/src/dashboard/components/AddSliceCard/AddSliceCard.test.tsx
    • superset-frontend/src/dashboard/components/BuilderComponentPane/index.tsx
    • superset-frontend/src/dashboard/components/CustomizationsBadge/index.tsx
    • superset-frontend/src/dashboard/components/DashboardBuilder/DashboardContainer.tsx
    • superset-frontend/src/dashboard/components/gridComponents/Tabs/Tabs.test.tsx
    • superset-frontend/src/dashboard/components/nativeFilters/ConfigModal/SharedStyles.tsx
    • superset-frontend/src/dashboard/components/nativeFilters/FilterBar/CrossFilters/CrossFilter.test.tsx
    • superset-frontend/src/dashboard/components/nativeFilters/FilterBar/UrlFilters/Vertical.test.tsx
    • superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/ConfigModalSidebar/ConfigModalSidebar.tsx
    • superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/DatasetSelect.test.tsx
    • superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigModal.test.tsx
    • superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/NewItemDropdown.tsx
    • superset-frontend/src/dashboard/styles.ts
    • superset-frontend/src/explore/components/ControlPanelsContainer.tsx
    • superset-frontend/src/explore/components/DataTablesPane/DataTablesPane.tsx
    • superset-frontend/src/explore/components/DataTablesPane/components/ResultsPaneOnDashboard.tsx
    • superset-frontend/src/explore/components/controls/ConditionalFormattingControl/FormattingPopoverContent.test.tsx
    • superset-frontend/src/explore/components/controls/DateFilterControl/components/DateFunctionTooltip.tsx
    • superset-frontend/src/explore/components/controls/DateFilterControl/tests/CustomFrame.test.tsx
    • superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopover/AdhocFilterEditPopover.test.tsx
    • superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopoverSimpleTabContent/AdhocFilterEditPopoverSimpleTabContent.test.tsx
    • superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopoverSimpleTabContent/index.tsx
    • superset-frontend/src/explore/components/controls/NumberControl/NumberControl.test.tsx
    • superset-frontend/src/explore/components/controls/SelectControl.test.tsx
    • superset-frontend/src/explore/components/controls/VizTypeControl/VizTypeGallery.tsx
    • superset-frontend/src/features/alerts/AlertReportModal.test.tsx
    • superset-frontend/src/features/databases/DatabaseModal/index.tsx
    • superset-frontend/src/features/databases/DatabaseModal/styles.ts
    • superset-frontend/src/features/semanticLayers/MultiEnumControl.test.tsx
    • superset-frontend/src/features/semanticLayers/SemanticLayerModal.tsx
    • superset-frontend/src/features/semanticLayers/jsonFormsAntdRenderers.test.tsx
    • superset-frontend/src/features/tasks/TaskPayloadPopover.tsx
    • superset-frontend/src/features/tasks/TaskStackTracePopover.tsx
    • superset-frontend/src/pages/ChartCreation/index.tsx
    • superset-frontend/src/pages/ChartList/ChartList.listview.test.tsx
    • superset-frontend/src/visualizations/TimeTable/TimeTable.test.tsx
  • Files skipped - 6
    • UPDATING.md - Reason: Filter setting
    • superset-frontend/package-lock.json - Reason: Filter setting
    • superset-frontend/package.json - Reason: Filter setting
    • superset-frontend/packages/superset-core/package.json - Reason: Filter setting
    • superset-frontend/packages/superset-ui-chart-controls/package.json - Reason: Filter setting
    • superset-frontend/packages/superset-ui-core/package.json - Reason: Filter setting
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful
    • Eslint (Linter) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

Comment thread superset-frontend/playwright/pages/ChartCreationPage.ts
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

🎪 Showtime is building environment on GHA for 5c967fd

Comment thread superset-frontend/cypress-base/cypress/e2e/dashboard/utils.ts
@github-actions

github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

🎪 Showtime deployed environment on GHA for 5c967fd

Environment: http://44.255.195.48:8080 (admin/admin)
Lifetime: 48h auto-cleanup
Updates: New commits create fresh environments automatically

@bito-code-review

bito-code-review Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Code Review Agent Run #78c8d4

Actionable Suggestions - 0
Review Details
  • Files reviewed - 1 · Commit Range: e70b39d..5c967fd
    • superset-frontend/src/features/alerts/AlertReportModal.test.tsx
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@EnxDev EnxDev left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

EnxDev's Review Agent — #41636 · HEAD 5c967fd

Nice work overall—this is a careful and comprehensive v5 → v6 migration. I spot-checked many of the renames, and the class selector migration looks consistent. I only found one follow-up worth addressing and a couple of small nits.

🟡 Should-fix

It looks like a few deprecated Ant Design v6 APIs remain:

  • FilterControlShared.tsx:230 and GroupByFilterCard.tsx:195overlayInnerStylestyles.container
  • ChartContextMenu.tsx:423dropdownRenderpopupRender
  • DatabaseModal/index.tsx:1249dropdownStylestyles.popup.root

These continue to work today thanks to Ant Design's compatibility layer, but still emit deprecation warnings and will become an issue in v7. The two Tooltip usages may be worth a quick runtime check as well, since the wrapper already sets styles.container.

🔵 Nits

  • The title includes a breaking change and removes @rjsf/antd; using feat(frontend)!: would better reflect the scope.
  • theme/utils/index.ts:82cssVar: falseundefined is reasonable given the v6 API changes, although it does lose the distinction between "explicitly disabled" and "unset". I think the current approach is acceptable.

🙌 Nice work

  • The new antdDomContract.test.tsx together with the updated theme token snapshots provide excellent regression coverage for the migration.
  • The ant-tabs class migration looks particularly well done, including the runtime classList.contains(...) check in DashboardContainer.tsx, which is an easy case to overlook.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

change:frontend Requires changing the frontend dependencies:npm packages plugins risk:breaking-change Issues or PRs that will introduce breaking changes size/XXL 🎪 5c967fd 🚦 running Environment 5c967fd status: running 🎪 5c967fd 🤡 rusackas Environment 5c967fd requested by rusackas 🎪 5c967fd 🌐 44.255.195.48:8080 Environment 5c967fd URL: http://44.255.195.48:8080 (click to visit) 🎪 5c967fd 📅 2026-07-08T11-25 Environment 5c967fd created at 2026-07-08T11-25 🎪 ⌛ 48h Environment expires after 48 hours (default)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants